//package com.smart.community.commons.utils;
//
//import cn.dev33.satoken.stp.StpUtil;
//import com.smart.community.commons.enums.RoleCodeEnum;
//import lombok.extern.slf4j.Slf4j;
//
//import java.util.Arrays;
//import java.util.List;
//
///**
// * 简化权限检查工具类
// * 仅保留菜单级权限控制，移除细粒度权限检查（按钮级、方法级）
// * @author Wu.Liang
// * @since 2025-07-02
// */
//@Slf4j
//public class PermissionUtils {
//
//    /**
//     * 检查当前用户是否具有菜单权限
//     * @param menuCode 菜单编码
//     * @return 是否具有菜单权限
//     */
//    public static boolean hasMenuPermission(String menuCode) {
//        try {
//            if (menuCode == null || menuCode.trim().isEmpty()) {
//                return false;
//            }
//            // 超级管理员拥有所有菜单权限
//            if (isCurrentUserSuperAdmin()) {
//                // 超级管理员拥有所有菜单权限 - 已隐藏详细日志
//                return true;
//            }
//            // 这里可以根据实际业务角色-菜单映射关系扩展
//            return getCurrentUserMenuPermissions().contains(menuCode);
//        } catch (Exception e) {
//            log.error("检查菜单权限{}失败", menuCode, e);
//            return false;
//        }
//    }
//
//    /**
//     * 获取当前用户的菜单权限列表
//     * @return 菜单权限列表
//     */
//    public static List<String> getCurrentUserMenuPermissions() {
//        try {
//            // 示例：根据角色返回对应的菜单权限
//            List<String> roles = getCurrentUserRoles();
//            if (roles.contains(RoleCodeEnum.SUPER_ADMIN.getCode())) {
//                return Arrays.asList("user:menu", "region:menu", "property:menu", "parking:menu", "security:menu");
//            }
//            // 其他角色可根据实际业务扩展
//            // 默认允许访问部分菜单
//            return Arrays.asList("user:menu", "region:menu");
//        } catch (Exception e) {
//            log.error("获取当前用户菜单权限列表失败", e);
//            return Arrays.asList();
//        }
//    }
//
//    /**
//     * 获取当前用户的角色列表
//     * @return 角色列表
//     */
//    public static List<String> getCurrentUserRoles() {
//        try {
//            // Sa-Token API调用，返回当前用户的角色列表
//            Object roleList = StpUtil.getSession().get("roleList");
//            if (roleList instanceof List) {
//                return (List<String>) roleList;
//            }
//            // 如果session中没有角色信息，返回默认角色
//            return Arrays.asList(RoleCodeEnum.NORMAL_USER.getCode());
//        } catch (Exception e) {
//            log.error("获取当前用户角色列表失败", e);
//            return Arrays.asList(RoleCodeEnum.NORMAL_USER.getCode());
//        }
//    }
//
//    /**
//     * 检查当前用户是否为超级管理员
//     * @return 是否为超级管理员
//     */
//    public static boolean isCurrentUserSuperAdmin() {
//        try {
//            return getCurrentUserRoles().contains(RoleCodeEnum.SUPER_ADMIN.getCode());
//        } catch (Exception e) {
//            log.error("检查超级管理员权限失败", e);
//            return false;
//        }
//    }
//
//    /**
//     * 断言当前用户具有菜单权限
//     * @param menuCode 菜单编码
//     * @throws RuntimeException 如果用户没有菜单权限
//     */
//    public static void requireMenuPermission(String menuCode) {
//        if (!hasMenuPermission(menuCode)) {
//            throw new RuntimeException("菜单权限不足：" + menuCode);
//        }
//    }
//
//    /**
//     * 断言当前用户为超级管理员
//     * @throws RuntimeException 如果用户不是超级管理员
//     */
//    public static void requireSuperAdmin() {
//        if (!isCurrentUserSuperAdmin()) {
//            throw new RuntimeException("需要超级管理员权限");
//        }
//    }
//
//    /**
//     * 断言当前用户已登录
//     * @throws RuntimeException 如果用户未登录
//     */
//    public static void requireLogin() {
//        if (!StpUtil.isLogin()) {
//            throw new RuntimeException("用户未登录");
//        }
//    }
//}
